<?php /** 用来封装相同的方法|逻辑 **/

/** 是否可以考试
 * @param $paper
 * @param $user_paper
 * @param $isEnd
 * @return string
 * @throws Exception
 */
function isTest($paper, $user_paper, &$isEnd): string{
    $currentTime = time();
    /* 进一步对试卷信息进行处理: 判断该考卷的状态 -> 未开始;待考试;已交卷;已过期 */
    $startTime = strtotime($paper['startTime']); // 获取考试开始时间
    $endTime = strtotime($paper['endTime']); // 获取考试结束时间
    // 如果 考试开始时间 > 当前时间, 那么就是考试未开始
    if( $startTime > $currentTime ){
        return "未开始";
    }else if( $startTime < $currentTime && $endTime > $currentTime ){ // 如果 考试开始时间 < 当前时间 && 考试结束时间 > 当前时间, 待考试或者已提交
        $isEnd = false; // 考试还没结束
        /* 如果 rank 等级字段不为空, 那么就是提交了 */
        if( !CommonMethods::isEmpty($user_paper['rank']) ){
            return "已提交";
        }else{
            return "待考试";
        }
    }else if( $endTime < $currentTime ){ // 如果 结束时间 < 当前时间, 那么就是 已过期;已交卷
        $isEnd = true; // 考试已经结束
        /* 如果 rank 等级字段不为空, 那么就是提交了 */
        if( !CommonMethods::isEmpty($user_paper['rank']) || !CommonMethods::isEmpty($user_paper['answerJson']) ){
            return "已提交";
        }else{
            return "已过期";
        }
    }else{
        throw new Exception("考试时间判断出现了异常");
    }
}

function getRank($score): string{
    $rank = "不及格";
    if( $score >= 0.6 && $score < 0.7 ){
        $rank = "及格";
    }else if( $score >= 0.7 && $score < 0.85 ){
        $rank = "中等";
    }else if( $score >= 0.85 ){
        $rank = "优";
    }
    return $rank;
}
